﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using MongoDB.Bson;
using MongoDB.Driver;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Xml.Linq;

namespace BattleShip_MongoDB
{
    public partial class CreateAccount : Form
    {
        public CreateAccount()
        {
            InitializeComponent();
        }
        private String User = "";
        private String Pass = "";
        private String PassConfirm = "";

        /////////////////////////////////// *** Button click Tao Tai Khoan *** /////////////////////////////////////

        private void buttonCreateAcc_Click(object sender, EventArgs e)
        {
            User = txtUserName.Text.ToString();
            Pass = txtPassword.Text.ToString();
            PassConfirm = txtPassConfirm.Text.ToString();
            labelStatus.Text = "";

            if (User.Equals(""))
            {
                labelStatus.Text = "Tạo tài khoản thất bại! \n User Name không hợp lệ.";
            }
            else if (!Pass.Equals(PassConfirm) || Pass.Equals("") || PassConfirm.Equals(""))
            {
                labelStatus.Text = "Tạo tài khoản thất bại!\n Mật khẩu không hợp lệ.";
            }
            else
            {
                // Connect to MongoDB
                MongoServer MongoDB = MongoServer.Create();
                MongoDB.Connect();

                var db = MongoDB.GetDatabase("BattleShipDataBase");

                using (MongoDB.RequestStart(db))
                {
                    var collection = db.GetCollection<BsonDocument>("Users");
                    var query = new QueryDocument("UserName", User);

                    foreach (BsonDocument item in collection.Find(query))
                    {
                        labelStatus.Text = "Tạo tài khoản thất bại!\n User Name đã tồn tại";
                    }

                    if (labelStatus.Text.Equals(""))
                    {
                        BsonDocument new_user = new BsonDocument()
                            .Add("UserID", BsonValue.Create(BsonType.ObjectId))
                            .Add("UserName", User)
                            .Add("Password", Pass)
                            //.Add("status", "0")
                            .Add("NumberOfWin", "0")
                            .Add("NumberOfLost", "0");

                        collection.Insert(new_user);

                        labelStatus.Text = "Tạo tài khoản thành công!";

                        UserInformation.UserID = new_user.GetElement("UserID").Value;
                        UserInformation.UserName = (string)new_user.GetElement("UserName").Value;
                        UserInformation.UserPass = (string)new_user.GetElement("Password").Value;
                        UserInformation.NumberOfWin = (string)new_user.GetElement("NumberOfWin").Value;
                        UserInformation.NumberOfLose  = (string)new_user.GetElement("NumberOfLost").Value;

                        if (UserInformation.gameRoom == null)
                            UserInformation.gameRoom = new GameRoom();
                        UserInformation.gameRoom.Show();
                        this.Hide();
                    }
                }

                MongoDB.Disconnect();
            }

            // End Connect to MongoDB
            if (labelStatus.Text.Equals(""))
            {
                labelStatus.Text = "Tạo tài khoản thất bại!";
            }
        }

        private void TaoTaiKhoan_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }

    }
}
